import 'dart:convert';

main() {
  // json
  String jsonStr = '{"name": "张三", "age": 18}';
  // 1. 把 json 字符串转换为 Map
  Map<String, dynamic> jsonMap = json.decode(jsonStr);
  // 判断类型
  print(jsonMap is Map);
  // 2. 把 Map 转换为类
  User user = User.fromJson(jsonMap);
  print(user.name);
  print(user.age);
  User user2 = User.fromJson2(jsonMap);
  print('第二种：${user2.name}');
  print('第二种：${user2.age}');
  // 3. 把类转换为 json 字符串
  String jsonStr2 = user.toJson();
  print(jsonStr2);
  // 4. 把类转换为 Map
  Map<String, dynamic> map = user.toMap();
  print(map);

}

// 用户信息类
class User {
  String? name;
  int? age;
  // 构造函数
  User(this.name, this.age);
  // 工厂构造函数
  factory User.fromJson(Map<String, dynamic> json) {
    return User(json['name'], json['age']);
  }
  User.fromJson2(Map json) {
    name = json['name'];
    age = json['age'];
  }
  // 把类转换为 json 字符串
  String toJson() {
    return json.encode({'name': name, 'age': age});
  }

  // 把类转换为 Map
  Map<String, dynamic> toMap() {
    return {'name': name, 'age': age};
  }
}
